/// 合同申请表单
class ContractRequestEntity {
  String? id;

  ContractRequestEntity({
    this.id,
  });

  Map<String, dynamic> toJson() => {
    "id": id,
  };
}

class ContractApplicationResponseEntity {
  int? code;
  ContractApplicationData? data;
  String? message;

  ContractApplicationResponseEntity({this.code, this.data, this.message});

  ContractApplicationResponseEntity.fromJson(Map<String, dynamic> json) {
    code = json['code'];
    data = json['data'] != null ? new ContractApplicationData.fromJson(json['data']) : null;
    message = json['message'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['code'] = this.code;
    if (this.data != null) {
      data['data'] = this.data!.toJson();
    }
    data['message'] = this.message;
    return data;
  }
}

class ContractApplicationData {
  int? id;
  String? name;
  String? flowImg;
  int? version;
  String? formDef;
  String? resource;
  String? userCode;
  String? userName;
  String? groupId;
  String? groupName;
  String? deployTime;
  String? initiator;

  ContractApplicationData(
      {this.id,
        this.name,
        this.flowImg,
        this.version,
        this.formDef,
        this.resource,
        this.userCode,
        this.userName,
        this.groupId,
        this.groupName,
        this.deployTime,
        this.initiator});

  ContractApplicationData.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    name = json['name'];
    flowImg = json['flowImg'];
    version = json['version'];
    formDef = json['formDef'];
    resource = json['resource'];
    userCode = json['userCode'];
    userName = json['userName'];
    groupId = json['groupId'];
    groupName = json['groupName'];
    deployTime = json['deployTime'];
    initiator = json['initiator'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['name'] = this.name;
    data['flowImg'] = this.flowImg;
    data['version'] = this.version;
    data['formDef'] = this.formDef;
    data['resource'] = this.resource;
    data['userCode'] = this.userCode;
    data['userName'] = this.userName;
    data['groupId'] = this.groupId;
    data['groupName'] = this.groupName;
    data['deployTime'] = this.deployTime;
    data['initiator'] = this.initiator;
    return data;
  }
}


class FormModel {
  String? formRef;
  String? formModel;
  String? size;
  String? labelPosition;
  int? labelWidth;
  String? formRules;
  int? gutter;
  bool? disabled;
  int? span;
  bool? formBtns;
  List<Fields>? fields;

  FormModel(
      {this.formRef,
        this.formModel,
        this.size,
        this.labelPosition,
        this.labelWidth,
        this.formRules,
        this.gutter,
        this.disabled,
        this.span,
        this.formBtns,
        this.fields});

  FormModel.fromJson(Map<String, dynamic> json) {
    formRef = json['formRef'];
    formModel = json['formModel'];
    size = json['size'];
    labelPosition = json['labelPosition'];
    labelWidth = json['labelWidth'];
    formRules = json['formRules'];
    gutter = json['gutter'];
    disabled = json['disabled'];
    span = json['span'];
    formBtns = json['formBtns'];
    if (json['fields'] != null) {
      fields = <Fields>[];
      json['fields'].forEach((v) {
        fields!.add(new Fields.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['formRef'] = this.formRef;
    data['formModel'] = this.formModel;
    data['size'] = this.size;
    data['labelPosition'] = this.labelPosition;
    data['labelWidth'] = this.labelWidth;
    data['formRules'] = this.formRules;
    data['gutter'] = this.gutter;
    data['disabled'] = this.disabled;
    data['span'] = this.span;
    data['formBtns'] = this.formBtns;
    if (this.fields != null) {
      data['fields'] = this.fields!.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Fields {
  String? append;
  bool? asSummary;
  bool? changeTag;
  bool? clearable;
  String? cmpType;
  bool? disabled;
  int? formId;
  String? label;
  int? labelWidth;
  String? layout;
  Null maxlength;
  String? placeholder;
  String? prefixIcon;
  String? prepend;
  bool? proCondition;
  bool? readonly;
  List<Null>? regList;
  int? renderKey;
  bool? required;
  bool? showWordLimit;
  int? span;
  Style? style;
  String? suffixIcon;
  String? tag;
  String? tagIcon;
  String? vModel;
  String? buttonType;
  dynamic defaultValue;
  int? maxNum;
  bool? searchable;
  List<String>? tabList;
  TagConfig? tagConfig;
  String? title;
  String? format;
  String? type;
  String? valueFormat;
  List<Null>? behaviorLinkage;
  bool? border;
  String? optionType;
  List<Options>? options;
  String? size;
  bool? filterable;
  bool? multiple;
  String? controlsPosition;
  bool? showChinese;
  bool? stepStrictly;
  String? validate;
  String? endPlaceholder;
  String? rangeSeparator;
  bool? showDuration;
  String? startPlaceholder;
  PickerOptions? pickerOptions;
  String? accept;
  String? action;
  bool? autoUpload;
  String? buttonText;
  Data? data;
  int? fileSize;
  String? listType;
  String? name;
  bool? showTip;
  String? sizeUnit;
  Autosize? autosize;

  Fields(
      {this.append,
        this.asSummary,
        this.changeTag,
        this.clearable,
        this.cmpType,
        this.disabled,
        this.formId,
        this.label,
        this.labelWidth,
        this.layout,
        this.maxlength,
        this.placeholder,
        this.prefixIcon,
        this.prepend,
        this.proCondition,
        this.readonly,
        this.regList,
        this.renderKey,
        this.required,
        this.showWordLimit,
        this.span,
        this.style,
        this.suffixIcon,
        this.tag,
        this.tagIcon,
        this.vModel,
        this.buttonType,
        this.defaultValue,
        this.maxNum,
        this.searchable,
        this.tabList,
        this.tagConfig,
        this.title,
        this.format,
        this.type,
        this.valueFormat,
        this.behaviorLinkage,
        this.border,
        this.optionType,
        this.options,
        this.size,
        this.filterable,
        this.multiple,
        this.controlsPosition,
        this.showChinese,
        this.stepStrictly,
        this.validate,
        this.endPlaceholder,
        this.rangeSeparator,
        this.showDuration,
        this.startPlaceholder,
        this.pickerOptions,
        this.accept,
        this.action,
        this.autoUpload,
        this.buttonText,
        this.data,
        this.fileSize,
        this.listType,
        this.name,
        this.showTip,
        this.sizeUnit,
        this.autosize});

  Fields.fromJson(Map<String, dynamic> json) {
    append = json['append'];
    asSummary = json['asSummary'];
    changeTag = json['changeTag'];
    clearable = json['clearable'];
    cmpType = json['cmpType'];
    disabled = json['disabled'];
    formId = json['formId'];
    label = json['label'];
    labelWidth = json['labelWidth'];
    layout = json['layout'];
    maxlength = json['maxlength'];
    placeholder = json['placeholder'];
    prefixIcon = json['prefix-icon'];
    prepend = json['prepend'];
    proCondition = json['proCondition'];
    readonly = json['readonly'];
    // if (json['regList'] != null) {
    //   regList = new List<Null>();
    //   json['regList'].forEach((v) {
    //     regList.add(new Null.fromJson(v));
    //   });
    // }
    renderKey = json['renderKey'];
    required = json['required'];
    showWordLimit = json['show-word-limit'];
    span = json['span'];
    style = json['style'] != null ? new Style.fromJson(json['style']) : null;
    suffixIcon = json['suffix-icon'];
    tag = json['tag'];
    tagIcon = json['tagIcon'];
    vModel = json['vModel'];
    buttonType = json['buttonType'];
    defaultValue = json['defaultValue'];
    maxNum = json['maxNum'];
    searchable = json['searchable'];
    tabList = json['tabList'].cast<String>();
    tagConfig = json['tagConfig'] != null
        ? new TagConfig.fromJson(json['tagConfig'])
        : null;
    title = json['title'];
    format = json['format'];
    type = json['type'];
    valueFormat = json['value-format'];
    // if (json['behaviorLinkage'] != null) {
    //   behaviorLinkage = new List<Null>();
    //   json['behaviorLinkage'].forEach((v) {
    //     behaviorLinkage.add(new Null.fromJson(v));
    //   });
    // }
    border = json['border'];
    optionType = json['optionType'];
    if (json['options'] != null) {
      options =  [];
      json['options'].forEach((v) {
        options!.add(new Options.fromJson(v));
      });
    }
    size = json['size'];
    filterable = json['filterable'];
    multiple = json['multiple'];
    controlsPosition = json['controls-position'];
    showChinese = json['showChinese'];
    stepStrictly = json['step-strictly'];
    validate = json['validate'];
    endPlaceholder = json['end-placeholder'];
    rangeSeparator = json['range-separator'];
    showDuration = json['showDuration'];
    startPlaceholder = json['start-placeholder'];
    pickerOptions = json['picker-options'] != null
        ? new PickerOptions.fromJson(json['picker-options'])
        : null;
    accept = json['accept'];
    action = json['action'];
    autoUpload = json['auto-upload'];
    buttonText = json['buttonText'];
    data = json['data'] != null ? new Data.fromJson(json['data']) : null;
    fileSize = json['fileSize'];
    listType = json['list-type'];
    name = json['name'];
    showTip = json['showTip'];
    sizeUnit = json['sizeUnit'];
    autosize = json['autosize'] != null
        ? new Autosize.fromJson(json['autosize'])
        : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['append'] = this.append;
    data['asSummary'] = this.asSummary;
    data['changeTag'] = this.changeTag;
    data['clearable'] = this.clearable;
    data['cmpType'] = this.cmpType;
    data['disabled'] = this.disabled;
    data['formId'] = this.formId;
    data['label'] = this.label;
    data['labelWidth'] = this.labelWidth;
    data['layout'] = this.layout;
    data['maxlength'] = this.maxlength;
    data['placeholder'] = this.placeholder;
    data['prefix-icon'] = this.prefixIcon;
    data['prepend'] = this.prepend;
    data['proCondition'] = this.proCondition;
    data['readonly'] = this.readonly;
    // if (this.regList != null) {
    //   data['regList'] = this.regList.map((v) => v.toJson()).toList();
    // }
    data['renderKey'] = this.renderKey;
    data['required'] = this.required;
    data['show-word-limit'] = this.showWordLimit;
    data['span'] = this.span;
    if (this.style != null) {
      data['style'] = this.style!.toJson();
    }
    data['suffix-icon'] = this.suffixIcon;
    data['tag'] = this.tag;
    data['tagIcon'] = this.tagIcon;
    data['vModel'] = this.vModel;
    data['buttonType'] = this.buttonType;
    data['defaultValue'] = this.defaultValue;
    data['maxNum'] = this.maxNum;
    data['searchable'] = this.searchable;
    data['tabList'] = this.tabList;
    if (this.tagConfig != null) {
      data['tagConfig'] = this.tagConfig!.toJson();
    }
    data['title'] = this.title;
    data['format'] = this.format;
    data['type'] = this.type;
    data['value-format'] = this.valueFormat;
    // if (this.behaviorLinkage != null) {
    //   data['behaviorLinkage'] =
    //       this.behaviorLinkage.map((v) => v.toJson()).toList();
    // }
    data['border'] = this.border;
    data['optionType'] = this.optionType;
    if (this.options != null) {
      data['options'] = this.options!.map((v) => v.toJson()).toList();
    }
    data['size'] = this.size;
    data['filterable'] = this.filterable;
    data['multiple'] = this.multiple;
    data['controls-position'] = this.controlsPosition;
    data['showChinese'] = this.showChinese;
    data['step-strictly'] = this.stepStrictly;
    data['validate'] = this.validate;
    data['end-placeholder'] = this.endPlaceholder;
    data['range-separator'] = this.rangeSeparator;
    data['showDuration'] = this.showDuration;
    data['start-placeholder'] = this.startPlaceholder;
    if (this.pickerOptions != null) {
      data['picker-options'] = this.pickerOptions!.toJson();
    }
    data['accept'] = this.accept;
    data['action'] = this.action;
    data['auto-upload'] = this.autoUpload;
    data['buttonText'] = this.buttonText;
    if (this.data != null) {
      data['data'] = this.data!.toJson();
    }
    data['fileSize'] = this.fileSize;
    data['list-type'] = this.listType;
    data['name'] = this.name;
    data['showTip'] = this.showTip;
    data['sizeUnit'] = this.sizeUnit;
    if (this.autosize != null) {
      data['autosize'] = this.autosize!.toJson();
    }
    return data;
  }
}

class Style {
  String? width;

  Style({this.width});

  Style.fromJson(Map<String, dynamic> json) {
    width = json['width'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['width'] = this.width;
    return data;
  }
}

class TagConfig {
  bool? closable;
  bool? disableTransitions;
  String? effect;
  bool? hit;
  String? size;
  String? type;

  TagConfig(
      {this.closable,
        this.disableTransitions,
        this.effect,
        this.hit,
        this.size,
        this.type});

  TagConfig.fromJson(Map<String, dynamic> json) {
    closable = json['closable'];
    disableTransitions = json['disable-transitions'];
    effect = json['effect'];
    hit = json['hit'];
    size = json['size'];
    type = json['type'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['closable'] = this.closable;
    data['disable-transitions'] = this.disableTransitions;
    data['effect'] = this.effect;
    data['hit'] = this.hit;
    data['size'] = this.size;
    data['type'] = this.type;
    return data;
  }
}

class Options {
  String? label;
  String? value;

  Options({this.label, this.value});

  Options.fromJson(Map<String, dynamic> json) {
    label = json['label'];
    value = json['value'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['label'] = this.label;
    data['value'] = this.value;
    return data;
  }
}

class PickerOptions {
  String? selectableRange;

  PickerOptions({this.selectableRange});

  PickerOptions.fromJson(Map<String, dynamic> json) {
    selectableRange = json['selectableRange'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['selectableRange'] = this.selectableRange;
    return data;
  }
}

class Data {
  String? fileType;

  Data({this.fileType});

  Data.fromJson(Map<String, dynamic> json) {
    fileType = json['fileType'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['fileType'] = this.fileType;
    return data;
  }
}

class Autosize {
  int? maxRows;
  int? minRows;

  Autosize({this.maxRows, this.minRows});

  Autosize.fromJson(Map<String, dynamic> json) {
    maxRows = json['maxRows'];
    minRows = json['minRows'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['maxRows'] = this.maxRows;
    data['minRows'] = this.minRows;
    return data;
  }
}

// 合同类型
class FindAllByMyselfResponseEntity {
  int? code;
  List<FindAllByMyselfItem>? data;
  String? message;
  int? total;

  FindAllByMyselfResponseEntity(
      {this.code, this.data, this.message, this.total});

  FindAllByMyselfResponseEntity.fromJson(Map<String, dynamic> json) {
    code = json['code'];
    if (json['data'] != null) {
      data = [];
      json['data'].forEach((v) {
        data!.add(new FindAllByMyselfItem.fromJson(v));
      });
    }
    message = json['message'];
    total = json['total'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['code'] = this.code;
    if (this.data != null) {
      data['data'] = this.data!.map((v) => v.toJson()).toList();
    }
    data['message'] = this.message;
    data['total'] = this.total;
    return data;
  }
}

class FindAllByMyselfItem {
  int? id;
  String? name;
  String? flowImg;
  int? version;
  String? userCode;
  String? userName;
  String? groupId;
  String? groupName;
  String? deployTime;
  String? initiator;

  FindAllByMyselfItem(
      {this.id,
        this.name,
        this.flowImg,
        this.version,
        this.userCode,
        this.userName,
        this.groupId,
        this.groupName,
        this.deployTime,
        this.initiator});

  FindAllByMyselfItem.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    name = json['name'];
    flowImg = json['flowImg'];
    version = json['version'];
    userCode = json['userCode'];
    userName = json['userName'];
    groupId = json['groupId'];
    groupName = json['groupName'];
    deployTime = json['deployTime'];
    initiator = json['initiator'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['name'] = this.name;
    data['flowImg'] = this.flowImg;
    data['version'] = this.version;
    data['userCode'] = this.userCode;
    data['userName'] = this.userName;
    data['groupId'] = this.groupId;
    data['groupName'] = this.groupName;
    data['deployTime'] = this.deployTime;
    data['initiator'] = this.initiator;
    return data;
  }
}
